跳到主要内容

第1.3篇:第一个Spring Boot应用

一、项目结构解析

1.1 标准项目布局

Spring Boot项目采用约定优于配置的思想,提供了清晰的目录结构:

src/
├── main/
│ ├── java/com/example/demo/
│ │ ├── controller/ # 控制器层
│ │ ├── service/ # 服务层
│ │ ├── repository/ # 数据访问层
│ │ ├── model/ # 数据模型
│ │ └── DemoApplication.java # 应用入口
│ └── resources/
│ ├── application.properties # 配置文件
│ ├── static/ # 静态资源
│ └── templates/ # 模板文件
└── test/ # 测试代码

1.2 核心文件说明

  • DemoApplication.java:应用程序入口类,包含main方法
  • application.properties:全局配置文件
  • pom.xml:Maven依赖配置

二、核心注解详解

2.1 @SpringBootApplication

这是Spring Boot的核心注解,是以下三个注解的组合:

  • @SpringBootConfiguration:标记类为配置类
  • @EnableAutoConfiguration:启用自动配置机制
  • @ComponentScan:扫描组件(默认扫描当前包及其子包)
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

2.2 常用注解速查表

注解作用应用场景
@RestController标记REST控制器API接口开发
@Service标记服务层组件业务逻辑实现
@Repository标记数据访问组件数据库操作
@Autowired自动注入依赖依赖管理
@Value注入配置属性读取配置文件
@RequestMapping映射HTTP请求URL路由定义

三、运行与调试方式

3.1 多种运行方式

IDEA运行

  1. 右键点击DemoApplication类
  2. 选择"Run DemoApplication"

Maven命令运行

mvn spring-boot:run

打包后运行

mvn clean package
java -jar target/demo-0.0.1-SNAPSHOT.jar

3.2 调试技巧

断点调试

  1. 在代码行号旁点击设置断点
  2. 右键选择"Debug DemoApplication"
  3. 使用调试工具栏控制执行流程

日志调试

在application.properties中配置日志级别:

logging.level.root=INFO
logging.level.com.example.demo=DEBUG

四、打包与部署流程

4.1 Maven打包配置

在pom.xml中添加打包插件:

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

4.2 执行打包命令

# 跳过测试打包
mvn clean package -DskipTests

# 查看打包结果
ls target/*.jar

4.3 部署选项

部署方式适用场景操作难度
本地运行开发测试★☆☆☆☆
服务器部署生产环境★★☆☆☆
Docker容器微服务架构★★★☆☆
云平台部署弹性扩展★★★★☆

五、实战:创建第一个REST API

5.1 创建控制器

@RestController
@RequestMapping("/api/hello")
public class HelloController {

@GetMapping
public String sayHello() {
return "Hello, Spring Boot!";
}

@GetMapping("/{name}")
public String sayHelloTo(@PathVariable String name) {
return "Hello, " + name + "!";
}
}

5.2 测试API

使用curl测试:

# 简单问候
curl http://localhost:8080/api/hello

# 带参数问候
curl http://localhost:8080/api/hello/World

六、常见问题与解决方案

6.1 端口冲突

问题Port 8080 was already in use 解决:在application.properties中修改端口:

server.port=8081

6.2 依赖冲突

问题:启动时报NoClassDefFoundError 解决:使用mvn dependency:tree分析依赖,排除冲突包:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
</exclusions>
</dependency>

附录

参考资料

扩展学习

  • Spring Boot配置文件详解
  • 自定义Starter开发
  • Spring Boot DevTools使用技巧